Micron Document
`:top
`!Peripheral Interchange Program`! (`!PIP`!) was a utility to transfer files on and between devices on `F33f`_`[Digital Equipment Corporation`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Digital_Equipment_Corporation]`_`f's computers. It was first implemented on the `F33f`_`[PDP-6`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=PDP-6]`_`f architecture by Harrison "Dit" Morse early in the 1960s. It was subsequently implemented for DEC's operating systems for `F33f`_`[PDP-10`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=PDP-10]`_`f, `F33f`_`[PDP-11`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=PDP-11]`_`f, and `F33f`_`[PDP-8`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=PDP-8]`_`f`:cite-ref-1[`F5bf`_`[1`#cite-note-1]`_`f] architectures. In the 1970s and 1980s `F33f`_`[Digital Research`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Digital_Research]`_`f implemented PIP on `F33f`_`[CP/M`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=CP/M]`_`f`:cite-ref-2[`F5bf`_`[2`#cite-note-2]`_`f] and `F33f`_`[MP/M`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=MP/M]`_`f.`:cite-ref-3[`F5bf`_`[3`#cite-note-3]`_`f]

>>Contents

• `F0af`_`[History`#history]`_`f
• `F0af`_`[PIP in CP/M and MP/M`#pip-in-cp-m-and-mp-m]`_`f
• `F0af`_`[Reserved filenames in Microsoft Windows`#reserved-filenames-in-microsoft-windows]`_`f
• `F0af`_`[See also`#see-also]`_`f
• `F0af`_`[References`#references]`_`f

-─

>>History

It is said that during development it was named ATLATL, which is an acronym for "Anything, Lord, to Anything, Lord."`:cite-ref-4[`F5bf`_`[4`#cite-note-4]`_`f] This humorously described both its purpose as a device-independent `F33f`_`[file copying`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=File_copying]`_`f tool and the difficulties at the time of safely copying files between devices.

The original PIP syntax was

`B100`F9d9PIP destination←source /switches`f`b

using the left-arrow character from the `F33f`_`[ASCII`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=ASCII]`_`f-1963 character set that the `F33f`_`[Flexowriter`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Friden_Flexowriter]`_`f keyboards of the time used. As other terminals were introduced that used later versions of ASCII (without the left-arrow character), PIP allowed the syntax

`B100`F9d9PIP destination=source`f`b

The `F33f`_`[underscore`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Underscore]`_`f (`F33f`_`[_`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Underscore]`_`f) character, which was in the same ASCII character position that left-arrow had occupied, was still supported to separate the destination and source specifications.

Source and destination were `*file specification`* strings. These consisted of a device name, typically 2 characters for device type such as DK (disk), LP (line printer), MT (magnetic tape), etc. and a unit number from 0 to 7, a colon (:), filename and extension.

Copying was generally permitted between any file specification to any other where it made sense.

Early versions of `F33f`_`[VAX/VMS`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=VAX/VMS]`_`f implemented certain `F33f`_`[DCL`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=DIGITAL_Command_Language]`_`f commands, such as `F33f`_`[DIRECTORY`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Directory_(OpenVMS_command)]`_`f and `F33f`_`[RENAME`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Ren_(command)]`_`f, by running `F33f`_`[RSX-11M`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=RSX-11M]`_`f PIP in compatibility mode. This usage of PIP was replaced by VAX-specific code in VAX/VMS 2.0,`:cite-ref-5[`F5bf`_`[5`#cite-note-5]`_`f] but PIP remained as part of the VAX-11 RSX layered product for VMS.`:cite-ref-6[`F5bf`_`[6`#cite-note-6]`_`f]

As late as the mid-1980s, PIP was still in common use on `F33f`_`[TOPS-10`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=TOPS-10]`_`f, `F33f`_`[TOPS-20`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=TOPS-20]`_`f and `F33f`_`[PDP-11`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=PDP-11]`_`f systems.

>>PIP in CP/M and MP/M

`F33f`_`[Gary Kildall`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Gary_Kildall]`_`f, who developed `F33f`_`[CP/M`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=CP/M]`_`f and `F33f`_`[MP/M`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=MP/M]`_`f, based much of the design of its file structure and command processor on operating systems from Digital Equipment, such as `F33f`_`[RSTS/E`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=RSTS/E]`_`f for the PDP-11. Besides accessing files on a `F33f`_`[floppy disk`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Floppy_disk]`_`f, the PIP command in CP/M could also transfer data to and from the following "special files":

• CON: — `F33f`_`[console`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=System_console]`_`f (input and output)
• AUX: — an auxiliary device. In CP/M 1 and 2, PIP used PUN: (paper tape punch) and RDR: (paper tape reader) instead of AUX:
• LST: — list output device, usually the `F33f`_`[printer`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Computer_printer]`_`f
• PRN: — as LST:, but lines were numbered, tabs expanded and form feeds added every 60 lines
• `F33f`_`[NUL:`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Null_device]`_`f — null device, akin to `F33f`_`[\Device\Null`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Null_device]`_`f and `F33f`_`[/dev/null`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Null_device]`_`f
• EOF: — input device that produced `F33f`_`[end-of-file`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=End-of-file]`_`f characters, `F33f`_`[ASCII`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=ASCII]`_`f 0x1A
• INP: — custom input device, by default the same as EOF:
• PUN: — punch card unit:
• OUT: — custom output device, by default the same as NUL:

These were not true `F33f`_`[device files`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Device_file]`_`f, however, because their handling was limited to PIP. The two custom devices INP: and OUT: were implemented as calls to fixed locations at the start of the PIP program; the intention was that the user, or the `F33f`_`[OEM`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Original_Equipment_Manufacturer]`_`f, could `F33f`_`[patch`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Software_patch]`_`f these locations to add their own input or output devices. 246 bytes of free space were left in the program for this purpose.

In addition to the usual `B100`F9d9PIP destination=source`f`b syntax, PIP under CP/M still allowed the old `B100`F9d9PIP destination_source`f`b form. This behaviour was not documented, and CP/M generally did not have a standard for which characters could appear in file names; therefore other programs could and did create filenames containing underscore characters, which PIP could not handle.

>>Reserved filenames in Microsoft Windows

The PIP program is the reason for reserved filenames in Microsoft Windows: `B100`F9d9CON`f`b `B100`F9d9PRN`f`b `B100`F9d9AUX`f`b `B100`F9d9NUL`f`b `B100`F9d9COM0`f`b `B100`F9d9COM1`f`b `B100`F9d9COM2`f`b `B100`F9d9COM3`f`b `B100`F9d9COM4`f`b `B100`F9d9COM5`f`b `B100`F9d9COM6`f`b `B100`F9d9COM7`f`b `B100`F9d9COM8`f`b `B100`F9d9COM9`f`b `B100`F9d9LPT0`f`b `B100`F9d9LPT1`f`b `B100`F9d9LPT2`f`b `B100`F9d9LPT3`f`b `B100`F9d9LPT4`f`b `B100`F9d9LPT5`f`b `B100`F9d9LPT6`f`b `B100`F9d9LPT7`f`b `B100`F9d9LPT8`f`b `B100`F9d9LPT9`f`b. This limitation is case-insensitive, and also applies to basenames. So for example, `B100`F9d9Con.txt`f`b is an invalid filename.

>>See also

• `F33f`_`[copy (command)`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Copy_(command)]`_`f – RT-11, RSX-11, OpenVMS, AmigaOS, DOS, OS/2 and Microsoft Windows command for copying data
• `F33f`_`[cp (Unix)`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Cp_(Unix)]`_`f – Unix command for copying data
• `F33f`_`[Kermit (protocol)`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Kermit_(protocol)]`_`f

>>References

`:cite-note-1`!1.`! `F0af`_`[↑`#cite-ref-1]`_`f OS/8, `*OS/8 System Reference Manual`*
`:cite-note-2`!2.`! `F0af`_`[↑`#cite-ref-2]`_`f CP/M, `*CP/M Operating System Manual`*
`:cite-note-3`!3.`! `F0af`_`[↑`#cite-ref-3]`_`f MP/M, `*MP/M Operating System User's Guide`*
`:cite-note-4`!4.`! `F0af`_`[↑`#cite-ref-4]`_`f PIP, `*The `F33f`_`[Jargon File`:/page/wikibook/entry.mu`zim=wikipedia_en_all_nopic_2025-08.zim|entry_path=Jargon_File]`_`f`*
`:cite-note-5`!5.`! `F0af`_`[↑`#cite-ref-5]`_`f "VAX/VMS Release Notes Version 2.0" (PDF).
`:cite-note-6`!6.`! `F0af`_`[↑`#cite-ref-6]`_`f "VAX-11 RSX Software Product Description" (PDF).

`c`F0af`_`[↑ Back to top`#top]`_`f`a